package main

// import (
// 	"encoding/json"
// 	"fmt"
// )

// type Address struct {
// 	Province string
// 	City     string
// }

// type User struct {
// 	Name    string
// 	Gender  string
// 	Address Address
// }

// type User1 struct {
// 	Name    string
// 	Gender  string
// 	Address //匿名结构体
// }

// // 结构体的继承

// type Animal struct {
// 	name string
// }

// func (a *Animal) move() {
// 	fmt.Printf("%s 会动\n ", a.name)
// }

// type Dog struct {
// 	Feet    int
// 	*Animal //通过嵌套匿名结构体实现继承
// 	// //通过嵌套匿名结构体实现继承
// }

// func (d *Dog) wang() {
// 	fmt.Printf("%s 会汪汪汪\n", d.name)
// }

// // json和结构体
// type Student struct {
// 	ID     int
// 	Gender string
// 	Name   string
// }

// // class班级
// type Class struct {
// 	Title    string
// 	Students []*Student
// }

// func main() {
// 	user1 := User{
// 		Name:   "proff",
// 		Gender: "女",
// 		Address: Address{
// 			Province: "江苏",
// 			City:     "南京",
// 		},
// 	}

// 	fmt.Printf("user1 = %v#\n", user1)

// 	var user2 User1
// 	user2.Name = "zhang"
// 	user2.Gender = "男"
// 	user2.Address.Province = "anhui"
// 	user2.Address.City = "hefei"
// 	fmt.Printf("user2 = %#v \n", user2)
// 	// 嵌套结构体内部可能存在相同的字段名。
// 	// 这个时候为了避免歧义需要指定具体的内嵌结构体的字段。

// 	fmt.Println("----------------------结构体的继承---------------")

// 	d1 := &Dog{
// 		Feet: 4,
// 		Animal: &Animal{
// 			name: "可可",
// 		},
// 	}
// 	d1.wang()
// 	d1.move()
// 	// /结构体中字段大写开头表示可公开访问，
// 	// 小写表示私有（仅在定义当前结构体的包中可访问）

// 	fmt.Println("===================json和结构体==========")

// 	c := &Class{
// 		Title:    "101",
// 		Students: make([]*Student, 0, 200),
// 	}

// 	for i := 0; i < 10; i++ {
// 		stu := &Student{
// 			Name:   fmt.Sprintf("stu :%02d", i),
// 			Gender: "男",
// 			ID:     i,
// 		}
// 		c.Students = append(c.Students, stu)
// 	}

// 	// json序列化，：结构化--》json格式的字符串
// 	data, err := json.Marshal(c)
// 	if err != nil {
// 		fmt.Println("json marshal failed")
// 		return
// 	}
// 	fmt.Printf("json: %s	\n", data)

// 	// json反序列化
// 	str := `{"Title":"101","Students":[{"ID":0,"Gender":"男","Name":"stu00"},{"ID":1,"Gender":"男","Name":"stu01"},{"ID":2,"Gender":"男","Name":"stu02"},{"ID":3,"Gender":"男","Name":"stu03"},{"ID":4,"Gender":"男","Name":"stu04"},{"ID":5,"Gender":"男","Name":"stu05"},{"ID":6,"Gender":"男","Name":"stu06"},{"ID":7,"Gender":"男","Name":"stu07"},{"ID":8,"Gender":"男","Name":"stu08"},{"ID":9,"Gender":"男","Name":"stu09"}]}`
// 	str_json := &Class{}
// 	err = json.Unmarshal([]byte(str), str_json)
// 	if err != nil {
// 		fmt.Println("json 	unmarsal failed	")
// 		return
// 	}

// 	fmt.Printf("%#v\n	", str_json)
// }
